fvp: pwrc: Move to drivers/ folder
authorAntonio Nino Diaz <[email protected]>
Wed, 23 Jan 2019 21:50:09 +0000 (21:50 +0000)
committerAntonio Nino Diaz <[email protected]>
Fri, 25 Jan 2019 16:04:11 +0000 (16:04 +0000)
Change-Id: I670ea80e0331c2d4b2ccfa563a45469a43f6902d
Signed-off-by: Antonio Nino Diaz <[email protected]>
drivers/arm/fvp/fvp_pwrc.c [new file with mode: 0644]
include/drivers/arm/fvp/fvp_pwrc.h [new file with mode: 0644]
plat/arm/board/fvp/aarch32/fvp_helpers.S
plat/arm/board/fvp/aarch64/fvp_helpers.S
plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c [deleted file]
plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.h [deleted file]
plat/arm/board/fvp/fvp_pm.c
plat/arm/board/fvp/fvp_topology.c
plat/arm/board/fvp/platform.mk
plat/arm/board/fvp/sp_min/sp_min-fvp.mk
plat/arm/board/fvp/tsp/tsp-fvp.mk

diff --git a/drivers/arm/fvp/fvp_pwrc.c b/drivers/arm/fvp/fvp_pwrc.c
new file mode 100644 (file)
index 0000000..75a2b66
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <drivers/arm/fvp/fvp_pwrc.h>
+#include <lib/bakery_lock.h>
+#include <lib/mmio.h>
+#include <plat/arm/common/plat_arm.h>
+#include <platform_def.h>
+
+/*
+ * TODO: Someday there will be a generic power controller api. At the moment
+ * each platform has its own pwrc so just exporting functions is fine.
+ */
+ARM_INSTANTIATE_LOCK;
+
+unsigned int fvp_pwrc_get_cpu_wkr(u_register_t mpidr)
+{
+       return PSYSR_WK(fvp_pwrc_read_psysr(mpidr));
+}
+
+unsigned int fvp_pwrc_read_psysr(u_register_t mpidr)
+{
+       unsigned int rc;
+       arm_lock_get();
+       mmio_write_32(PWRC_BASE + PSYSR_OFF, (unsigned int) mpidr);
+       rc = mmio_read_32(PWRC_BASE + PSYSR_OFF);
+       arm_lock_release();
+       return rc;
+}
+
+void fvp_pwrc_write_pponr(u_register_t mpidr)
+{
+       arm_lock_get();
+       mmio_write_32(PWRC_BASE + PPONR_OFF, (unsigned int) mpidr);
+       arm_lock_release();
+}
+
+void fvp_pwrc_write_ppoffr(u_register_t mpidr)
+{
+       arm_lock_get();
+       mmio_write_32(PWRC_BASE + PPOFFR_OFF, (unsigned int) mpidr);
+       arm_lock_release();
+}
+
+void fvp_pwrc_set_wen(u_register_t mpidr)
+{
+       arm_lock_get();
+       mmio_write_32(PWRC_BASE + PWKUPR_OFF,
+                     (unsigned int) (PWKUPR_WEN | mpidr));
+       arm_lock_release();
+}
+
+void fvp_pwrc_clr_wen(u_register_t mpidr)
+{
+       arm_lock_get();
+       mmio_write_32(PWRC_BASE + PWKUPR_OFF,
+                     (unsigned int) mpidr);
+       arm_lock_release();
+}
+
+void fvp_pwrc_write_pcoffr(u_register_t mpidr)
+{
+       arm_lock_get();
+       mmio_write_32(PWRC_BASE + PCOFFR_OFF, (unsigned int) mpidr);
+       arm_lock_release();
+}
+
+/* Nothing else to do here apart from initializing the lock */
+void __init plat_arm_pwrc_setup(void)
+{
+       arm_lock_init();
+}
+
+
+
diff --git a/include/drivers/arm/fvp/fvp_pwrc.h b/include/drivers/arm/fvp/fvp_pwrc.h
new file mode 100644 (file)
index 0000000..ca173f3
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef FVP_PWRC_H
+#define FVP_PWRC_H
+
+/* FVP Power controller register offset etc */
+#define PPOFFR_OFF             U(0x0)
+#define PPONR_OFF              U(0x4)
+#define PCOFFR_OFF             U(0x8)
+#define PWKUPR_OFF             U(0xc)
+#define PSYSR_OFF              U(0x10)
+
+#define PWKUPR_WEN             BIT_32(31)
+
+#define PSYSR_AFF_L2           BIT_32(31)
+#define PSYSR_AFF_L1           BIT_32(30)
+#define PSYSR_AFF_L0           BIT_32(29)
+#define PSYSR_WEN              BIT_32(28)
+#define PSYSR_PC               BIT_32(27)
+#define PSYSR_PP               BIT_32(26)
+
+#define PSYSR_WK_SHIFT         24
+#define PSYSR_WK_WIDTH         0x2
+#define PSYSR_WK_MASK          ((1U << PSYSR_WK_WIDTH) - 1U)
+#define PSYSR_WK(x)            ((x) >> PSYSR_WK_SHIFT) & PSYSR_WK_MASK
+
+#define WKUP_COLD              U(0x0)
+#define WKUP_RESET             U(0x1)
+#define WKUP_PPONR             U(0x2)
+#define WKUP_GICREQ            U(0x3)
+
+#define PSYSR_INVALID          U(0xffffffff)
+
+#ifndef __ASSEMBLY__
+
+#include <stdint.h>
+
+/*******************************************************************************
+ * Function & variable prototypes
+ ******************************************************************************/
+void fvp_pwrc_write_pcoffr(u_register_t mpidr);
+void fvp_pwrc_write_ppoffr(u_register_t mpidr);
+void fvp_pwrc_write_pponr(u_register_t mpidr);
+void fvp_pwrc_set_wen(u_register_t mpidr);
+void fvp_pwrc_clr_wen(u_register_t mpidr);
+unsigned int fvp_pwrc_read_psysr(u_register_t mpidr);
+unsigned int fvp_pwrc_get_cpu_wkr(u_register_t mpidr);
+
+#endif /*__ASSEMBLY__*/
+
+#endif /* FVP_PWRC_H */
index f68955753c37e7b54161471b6c15b34f78f665a3..9985c1ddbc4c7d7b1baa57d6cc35ee5ac47f50f2 100644 (file)
@@ -6,10 +6,9 @@
 
 #include <arch.h>
 #include <asm_macros.S>
+#include <drivers/arm/fvp/fvp_pwrc.h>
 #include <platform_def.h>
 
-#include "../drivers/pwrc/fvp_pwrc.h"
-
        .globl  plat_secondary_cold_boot_setup
        .globl  plat_get_my_entrypoint
        .globl  plat_is_my_cpu_primary
index 02a3c7c9933b2a0b9e9c2d0775c1ceae68f342fa..09f19f6c351eaedece2937913aafa64b7f3d1bd9 100644 (file)
@@ -8,10 +8,9 @@
 #include <asm_macros.S>
 #include <drivers/arm/gicv2.h>
 #include <drivers/arm/gicv3.h>
+#include <drivers/arm/fvp/fvp_pwrc.h>
 #include <platform_def.h>
 
-#include "../drivers/pwrc/fvp_pwrc.h"
-
        .globl  plat_secondary_cold_boot_setup
        .globl  plat_get_my_entrypoint
        .globl  plat_is_my_cpu_primary
diff --git a/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c b/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c
deleted file mode 100644 (file)
index 9080e22..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <lib/bakery_lock.h>
-#include <lib/mmio.h>
-#include <plat/arm/common/plat_arm.h>
-#include <platform_def.h>
-
-#include "../../fvp_private.h"
-#include "fvp_pwrc.h"
-
-/*
- * TODO: Someday there will be a generic power controller api. At the moment
- * each platform has its own pwrc so just exporting functions is fine.
- */
-ARM_INSTANTIATE_LOCK;
-
-unsigned int fvp_pwrc_get_cpu_wkr(u_register_t mpidr)
-{
-       return PSYSR_WK(fvp_pwrc_read_psysr(mpidr));
-}
-
-unsigned int fvp_pwrc_read_psysr(u_register_t mpidr)
-{
-       unsigned int rc;
-       arm_lock_get();
-       mmio_write_32(PWRC_BASE + PSYSR_OFF, (unsigned int) mpidr);
-       rc = mmio_read_32(PWRC_BASE + PSYSR_OFF);
-       arm_lock_release();
-       return rc;
-}
-
-void fvp_pwrc_write_pponr(u_register_t mpidr)
-{
-       arm_lock_get();
-       mmio_write_32(PWRC_BASE + PPONR_OFF, (unsigned int) mpidr);
-       arm_lock_release();
-}
-
-void fvp_pwrc_write_ppoffr(u_register_t mpidr)
-{
-       arm_lock_get();
-       mmio_write_32(PWRC_BASE + PPOFFR_OFF, (unsigned int) mpidr);
-       arm_lock_release();
-}
-
-void fvp_pwrc_set_wen(u_register_t mpidr)
-{
-       arm_lock_get();
-       mmio_write_32(PWRC_BASE + PWKUPR_OFF,
-                     (unsigned int) (PWKUPR_WEN | mpidr));
-       arm_lock_release();
-}
-
-void fvp_pwrc_clr_wen(u_register_t mpidr)
-{
-       arm_lock_get();
-       mmio_write_32(PWRC_BASE + PWKUPR_OFF,
-                     (unsigned int) mpidr);
-       arm_lock_release();
-}
-
-void fvp_pwrc_write_pcoffr(u_register_t mpidr)
-{
-       arm_lock_get();
-       mmio_write_32(PWRC_BASE + PCOFFR_OFF, (unsigned int) mpidr);
-       arm_lock_release();
-}
-
-/* Nothing else to do here apart from initializing the lock */
-void __init plat_arm_pwrc_setup(void)
-{
-       arm_lock_init();
-}
-
-
-
diff --git a/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.h b/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.h
deleted file mode 100644 (file)
index 324f3e2..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef FVP_PWRC_H
-#define FVP_PWRC_H
-
-/* FVP Power controller register offset etc */
-#define PPOFFR_OFF             U(0x0)
-#define PPONR_OFF              U(0x4)
-#define PCOFFR_OFF             U(0x8)
-#define PWKUPR_OFF             U(0xc)
-#define PSYSR_OFF              U(0x10)
-
-#define PWKUPR_WEN             BIT_32(31)
-
-#define PSYSR_AFF_L2           BIT_32(31)
-#define PSYSR_AFF_L1           BIT_32(30)
-#define PSYSR_AFF_L0           BIT_32(29)
-#define PSYSR_WEN              BIT_32(28)
-#define PSYSR_PC               BIT_32(27)
-#define PSYSR_PP               BIT_32(26)
-
-#define PSYSR_WK_SHIFT         24
-#define PSYSR_WK_WIDTH         0x2
-#define PSYSR_WK_MASK          ((1U << PSYSR_WK_WIDTH) - 1U)
-#define PSYSR_WK(x)            ((x) >> PSYSR_WK_SHIFT) & PSYSR_WK_MASK
-
-#define WKUP_COLD              U(0x0)
-#define WKUP_RESET             U(0x1)
-#define WKUP_PPONR             U(0x2)
-#define WKUP_GICREQ            U(0x3)
-
-#define PSYSR_INVALID          U(0xffffffff)
-
-#ifndef __ASSEMBLY__
-
-/*******************************************************************************
- * Function & variable prototypes
- ******************************************************************************/
-void fvp_pwrc_write_pcoffr(u_register_t mpidr);
-void fvp_pwrc_write_ppoffr(u_register_t mpidr);
-void fvp_pwrc_write_pponr(u_register_t mpidr);
-void fvp_pwrc_set_wen(u_register_t mpidr);
-void fvp_pwrc_clr_wen(u_register_t mpidr);
-unsigned int fvp_pwrc_read_psysr(u_register_t mpidr);
-unsigned int fvp_pwrc_get_cpu_wkr(u_register_t mpidr);
-
-#endif /*__ASSEMBLY__*/
-
-#endif /* FVP_PWRC_H */
index a51fa17183f7cd70a3d40210d03ac9305e1d27e1..ecf0b0135bc9e3b190777ab477541f7604e43baf 100644 (file)
@@ -10,6 +10,7 @@
 #include <arch_helpers.h>
 #include <common/debug.h>
 #include <drivers/arm/gicv3.h>
+#include <drivers/arm/fvp/fvp_pwrc.h>
 #include <lib/extensions/spe.h>
 #include <lib/mmio.h>
 #include <lib/psci/psci.h>
@@ -18,7 +19,6 @@
 #include <plat/common/platform.h>
 #include <platform_def.h>
 
-#include "drivers/pwrc/fvp_pwrc.h"
 #include "fvp_private.h"
 
 
index 5e066eaabde303f8a96df7e10aa8e039ec0074a7..9823fb3b383c40c2ec4589541a055f01ab134785 100644 (file)
@@ -7,13 +7,12 @@
 #include <platform_def.h>
 
 #include <arch.h>
+#include <drivers/arm/fvp/fvp_pwrc.h>
 #include <lib/cassert.h>
 #include <plat/arm/common/arm_config.h>
 #include <plat/arm/common/plat_arm.h>
 #include <plat/common/platform.h>
 
-#include "drivers/pwrc/fvp_pwrc.h"
-
 /* The FVP power domain tree descriptor */
 static unsigned char fvp_power_domain_tree_desc[FVP_CLUSTER_COUNT + 2];
 
index a174214ae41928871b74317252abe4f8f5aaabf1..f79ac466b403feed9f75ba51b5f7c2c7d9f1f5a4 100644 (file)
@@ -146,14 +146,14 @@ endif
 BL2U_SOURCES           +=      plat/arm/board/fvp/fvp_bl2u_setup.c             \
                                ${FVP_SECURITY_SOURCES}
 
-BL31_SOURCES           +=      drivers/arm/smmu/smmu_v3.c                      \
+BL31_SOURCES           +=      drivers/arm/fvp/fvp_pwrc.c                      \
+                               drivers/arm/smmu/smmu_v3.c                      \
                                drivers/cfi/v2m/v2m_flash.c                     \
                                lib/utils/mem_region.c                          \
                                plat/arm/board/fvp/fvp_bl31_setup.c             \
                                plat/arm/board/fvp/fvp_pm.c                     \
                                plat/arm/board/fvp/fvp_topology.c               \
                                plat/arm/board/fvp/aarch64/fvp_helpers.S        \
-                               plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c      \
                                plat/arm/common/arm_nor_psci_mem_protect.c      \
                                ${FVP_CPU_LIBS}                                 \
                                ${FVP_GIC_SOURCES}                              \
index 8b17c9b736d6f1be497cc398fb211967d94e93bf..0250a5f1a2096e1f2cfe810e574aa88e9bc1e45d 100644 (file)
@@ -5,10 +5,10 @@
 #
 
 # SP_MIN source files specific to FVP platform
-BL32_SOURCES           +=      drivers/cfi/v2m/v2m_flash.c                     \
+BL32_SOURCES           +=      drivers/arm/fvp/fvp_pwrc.c                      \
+                               drivers/cfi/v2m/v2m_flash.c                     \
                                lib/utils/mem_region.c                          \
                                plat/arm/board/fvp/aarch32/fvp_helpers.S        \
-                               plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c      \
                                plat/arm/board/fvp/fvp_pm.c                     \
                                plat/arm/board/fvp/fvp_topology.c               \
                                plat/arm/board/fvp/sp_min/fvp_sp_min_setup.c    \
index 861fe7208076a272190f3637f306074d96d8a4ee..ab3f225a4fe237b815e72aba39c30fb060b41b74 100644 (file)
@@ -5,8 +5,8 @@
 #
 
 # TSP source files specific to FVP platform
-BL32_SOURCES           +=      plat/arm/board/fvp/aarch64/fvp_helpers.S        \
-                               plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c      \
+BL32_SOURCES           +=      drivers/arm/fvp/fvp_pwrc.c                      \
+                               plat/arm/board/fvp/aarch64/fvp_helpers.S        \
                                plat/arm/board/fvp/fvp_topology.c               \
                                plat/arm/board/fvp/tsp/fvp_tsp_setup.c          \
                                ${FVP_GIC_SOURCES}